package com.ruoyi.merchant.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 商品对象 products
 */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Product extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 商品ID */
    private Long productId;

    /** 商家ID */
    @Excel(name = "商家ID")
    private Long merchantId;

    /** 分类ID */
    @Excel(name = "分类ID")
    private Long categoryId;

    /** 名称 */
    @Excel(name = "商品名称")
    private String name;

    /** 描述 */
    @Excel(name = "描述")
    private String description;

    /** 图片 */
    @Excel(name = "图片URL")
    private String imageUrl;

    /** 市场价 */
    @Excel(name = "市场价")
    private BigDecimal marketPrice;

    /** 区域价 */
    @Excel(name = "区域价")
    private BigDecimal regionPrice;

    /** 库存 */
    @Excel(name = "库存")
    private Integer stockQuantity;

    /** 销量 */
    @Excel(name = "销量")
    private Integer salesCount;

    /** 审核状态：0-未审核；1-审核通过；2-审核未通过 */
    @Excel(name = "审核状态", readConverterExp = "0=未审核,1=审核通过,2=审核未通过")
    private Integer auditStatus;

    /** 状态：0-下架，1-上架，2-售罄 */
    @Excel(name = "状态", readConverterExp = "0=下架,1=上架,2=售罄")
    private Integer status;

    /** 排序 */
    @Excel(name = "排序")
    private Integer sortOrder;

    /** 删除时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deletedAt;

    /** 预留字段1 */
    private String externField1;

    /** 预留字段2 */
    private String externField2;

    /** 商家名称 */
    @Excel(name = "商家名称")
    private String merchantName;

    /** 分类名称 */
    @Excel(name = "分类名称")
    private String categoryName;

    /** 规格分组列表（非数据库字段） */
    private List<ProductSpecGroup> specGroups;

    /** SKU列表（非数据库字段） */
    private List<ProductSpecDetail> skuList;
}
